//
//  XCWaterFallLayout.h
//  collectViewDemo
//
//  Created by wulanzhou on 2016/11/4.
//  Copyright © 2016年 wulanzhou. All rights reserved.
//

#import <UIKit/UIKit.h>

@protocol XCWaterFallLayoutDelegate <NSObject>

@required
- (CGFloat)waterFallLayout:(id)layout heightForWidth:(CGFloat)width atIndexPath:(NSIndexPath *)indexPath;

@end


@interface XCWaterFallLayout : UICollectionViewFlowLayout

@property (nonatomic,assign) id<XCWaterFallLayoutDelegate> delegate;


/**
 列间距
 */
@property (nonatomic,assign) CGFloat columnMargin;

/**
 行间距
 */
@property (nonatomic,assign) CGFloat rowMargin;

/**
 列数
 */
@property (nonatomic,assign) CGFloat columnsCount;

/**
 四周的距离设置
 */
//@property (nonatomic,assign) UIEdgeInsets sectionInset;

/**
 存储每一列最大的Y
 */
@property (nonatomic,strong) NSMutableDictionary *macYDict;

/**
 存放所有布局属性
 */
@property (nonatomic,strong) NSMutableArray *attrsArray;


@end


/**
 
 当我们使用系统自带的UICollectionViewFlowLayout无法实现我们的布局时，我们就可以考虑自定义layout。
 所以，了解并学习一下自定义Layout是很有必要。
 其实可以分三个步骤：
 
 1.覆写prepareLayout方法，并在里面事先就计算好必要的布局信息并存储起来。
 2.基于prepareLayout方法中的布局信息，使用collectionViewContentSize方法返回UICollectionView的内容尺寸。
 3.使用layoutAttributesForElementsInRect:方法返回指定区域cell、Supplementary View和Decoration View的布局属性。
 
 **/
